/**
 *
 * ......................我佛慈悲.......................
 *                       _oo0oo_
 *                      o8888888o
 *                      88" . "88
 *                      (| -_- |)
 *                      0\  =  /0
 *                    ___/`---'\___
 *                  .' \\|     |// '.
 *                 / \\|||  :  |||// \
 *                / _||||| -卍-|||||- \
 *               |   | \\\  -  /// |   |
 *               | \_|  ''\---/''  |_/ |
 *               \  .-\__  '-'  ___/-. /
 *             ___'. .'  /--.--\  `. .'___
 *          ."" '<  `.___\_<|>_/___.' >' "".
 *         | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *         \  \ `_.   \_ __\ /__ _/   .-` /  /
 *     =====`-.____`.___ \_____/___.-`___.-'=====
 *                       `=---='
 *
 *..................佛祖开光 ,永无BUG....................
 *         CSDN博客:http://blog.csdn.net/song5347
 *       github地址:https://github.com/lingsuiderongyan
 *             邮箱:lingsuiderongyan@163.com
 */

import UIKit

class LSStatusListViewModel: NSObject {
    
    //微博数据源
    lazy var statusList: [LSStatusViewModel] = [LSStatusViewModel]()
    
    //MARK: - 加载微博数据
    func loadData(isPullup: Bool, callBack: (isSuccess: Bool, message: String)->()) {
        
        //上拉加载所需要的参数
        var maxId: Int64 = 0
        //下拉刷新所需要的参数
        var sinceId: Int64 = 0
        
        if isPullup {
            //上拉加载获取数据源里面最后一条微博数据的id
            maxId = statusList.last?.status?.id ?? 0
            
            if maxId > 0 {
                //避免重复数据
                maxId -= 1
            }
            
        } else {
            
            sinceId = statusList.first?.status?.id ?? 0
            
        }
        
        //默认显示的tip文字
        var result = ">_<没有更新的微博啦>_<"
        
        LSNetworkTools.sharedTools.requestStatuses(LSUserAccountViewModel.sharedUserAccount.accessToken!, maxId: maxId, sinceId: sinceId) { (response, error) -> () in
            if error != nil {
                print("网络请求异常,\(error)")
                callBack(isSuccess: false, message: result)
                return
            }
            //MARK: - 代码执行到这,表示网络请求成功
            guard let dic = response as? [String: AnyObject] else {
                print("字典格式不正确")
                callBack(isSuccess: false, message: result)
                return
            }
            
            //MARK: - 字典格式正确
            guard let dicArray = dic["statuses"] as? [[String: AnyObject]] else {
                print("字典格式不正确")
                callBack(isSuccess: false, message: result)
                return
            }
            
            //MARK: - 定义临时数据
            var tempArray = [LSStatusViewModel]()
            for value in dicArray {
                //字典转模型
                let status = LSStatus(dic: value)
                
                //  viewModel
                let statusViewModel = LSStatusViewModel(status: status)
                
                tempArray.append(statusViewModel)
            }
            //设置数据源
            if isPullup {
                //上拉加载追加服务端返回的数据
                self.statusList.appendContentsOf(tempArray)
            } else {
                //下拉刷新服务端返回的数据插入到第一个元素
                self.statusList.insertContentsOf(tempArray, at: 0)
            }
            
            if tempArray.count > 0 {
                
                result = "\(tempArray.count)条新微薄"
                //result = "加载了\(tempArray.count)条新微薄"
                
            }
            
            //刷新数据
            callBack(isSuccess: true, message: result)
        }
    }
}

















